home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
basic
/
glib19.zip
/
TECHINFO.DOC
< prev
Wrap
Text File
|
1991-06-27
|
4KB
|
134 lines
I. Technical Notes
Copyright (C) InfoSoft, 1990 - 1991
Every library function is designed to be as compatible as
possible not only across the various DOS versions but among compatible
(and sometimes not so compatible) clone systems. In all cases the
functions are designed to properly operate on Phoenix and IBM 5153 (the
original PC) BIOS systems.
We will attempt to briefly document here any known problems
with certain systems, routines and/or QB itself:
A. DELAY/DELAY18 3/90
We recently noticed a very strange bug in a very large application
under BASIC PDS (both in the QBX environment and in compiled form).
When we sound the speaker via SpkrSnd either directly or indirectly via
DialogBox or FlexMenu errors, the speaker stayed on (ie the passed
Duration value is incorrect).
Further investigation indicates that this is a problem in QB
passing arguments BYVAL in large programs. I can think of 3 ways to
generate a delay:
(1) Use INT 1ah to get the time and wait until x seconds
or ticks are up. This one seems to work the best in the
program described above. This has been reported to not
work well on TANDY systems, but since documentation as
far back as late 1986 show INT 1ah function 00 to be a
valid BIOS call even on the original IBM PC, I have to
assume problems with this method are are compatibility
related.
(2) Loop based on a peek at low memory where the clock tick
is maintained. Sounds good, but does not work in the
program above.
(3) Take over INT 1Ch and let the BIOS count it off for us.
This is the messiest and slowest method, and it too
fails.
Better results were always had using delays of more than 1
tick. Oddly, limited success is also achieved by moving the
DECLARE statement.
For these reasons, all 3 methods of generating a short delay are
available to registered GLIB users. The distribution LIB and QLB are
created using method 1 above. Each method is called in the same manner
(ie with the same name), but you can only add one to a LIB or a QLB and
avoid name conflicts. Try them out and use the one that works best for
you. The following shows the method used in each object module:
DELAY.OBJ - INT 1ah (Method 1)
DELAYX.OBJ - Low memory tick (Method 2)
DELAYI.OBJ - Revectoring INT 1ch (Method 3)
B. ArgC/ArgV 4/90
These work fine under DOS 3.1 and before, but we have had reports of
problems under PC DOS 3.31. Further investigation has revealed that DOS
3.1 and before DO NOT include the trailing carriage return as part of the
length of the command tail in accordance with all DOS references.
However, at least PC DOS 3.31 appears to include the trailing carriage
return as a part of the length contrary to the various and numerous
documentations available. As of GLib 2.0x, ArgC and ArgV should operate
correctly without regard to the prevailing DOS version.
C. ArgC/ArgV 6/90
The command line argument routines included in initial shipments of
the General LIBrary (GLIB) for BASIC PDS incorrectly counted the number
of arguments when arguments were separated by more than one space.
Likewise, ArgVar would return a null string when fetching the argument
immediately preceeded by 2 or more spaces. As of June 1990, these have
been fixed. Essentially, if you are reading this, then ArgC/ArgV in your
library should work right.